#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF读取器使用示例
"""

from pdf_reader import PDFReader
import os
from pathlib import Path

def main():
    """使用示例"""
    
    print("=== PDF读取器使用示例 ===\n")
    
    try:
        # 创建PDF读取器实例
        reader = PDFReader()
        print(f"可用的PDF处理引擎: {reader.available_engines}")
        
        # 示例PDF文件路径（您需要替换为实际的PDF文件）
        pdf_file = "sample.pdf"
        
        # 检查是否有PDF文件
        pdf_files = list(Path('.').glob('*.pdf'))
        if pdf_files:
            pdf_file = str(pdf_files[0])
            print(f"使用文件: {pdf_file}")
        else:
            print("当前目录下未找到PDF文件，请将PDF文件放在当前目录下")
            return
        
        print("\n" + "="*60)
        
        # 1. 获取PDF文件基本信息
        print("\n1. 获取PDF文件信息:")
        info = reader.get_pdf_info(pdf_file)
        if info:
            print(f"   文件路径: {info['file_path']}")
            print(f"   文件大小: {info['file_size']:,} 字节")
            print(f"   页数: {info['pages']}")
            print(f"   标题: {info['title']}")
            print(f"   作者: {info['author']}")
            print(f"   主题: {info['subject']}")
            print(f"   创建者: {info['creator']}")
            print(f"   生产者: {info['producer']}")
            print(f"   创建时间: {info['creation_date']}")
            print(f"   修改时间: {info['modification_date']}")
        
        print("\n" + "="*60)
        
        # 2. 提取前3页文本内容
        print("\n2. 提取前3页文本内容:")
        text_content = reader.extract_text(pdf_file, engine='auto', start_page=0, end_page=3)
        
        if text_content:
            for page_content in text_content:
                print(f"\n--- 第 {page_content['page']} 页 ---")
                text = page_content['text']
                if text:
                    # 显示前200字符作为预览
                    preview = text[:200].replace('\n', ' ').strip()
                    print(f"内容预览: {preview}")
                    if len(text) > 200:
                        print("...")
                    print(f"总字符数: {len(text)}")
                else:
                    print("该页无文本内容")
                
                # 如果有表格信息
                if 'tables' in page_content and page_content['tables']:
                    print(f"表格数量: {len(page_content['tables'])}")
                
                # 如果有页面尺寸信息
                if 'width' in page_content and 'height' in page_content:
                    print(f"页面尺寸: {page_content['width']:.1f} x {page_content['height']:.1f}")
                if 'images' in page_content:
                    print(f"图片数量: {page_content['images']}")
        
        print("\n" + "="*60)
        
        # 3. 保存完整文本到文件
        print("\n3. 保存完整文本到文件:")
        full_text = reader.extract_text(pdf_file, engine='auto')
        if full_text:
            output_file = f"{Path(pdf_file).stem}_提取的文本.txt"
            reader.save_text_to_file(full_text, output_file, format='txt')
            print(f"完整文本已保存到: {output_file}")
            
            # 也保存JSON格式
            json_file = f"{Path(pdf_file).stem}_提取的文本.json"
            reader.save_text_to_file(full_text, json_file, format='json')
            print(f"JSON格式已保存到: {json_file}")
        
        print("\n" + "="*60)
        
        # 4. 提取图片（如果支持）
        print("\n4. 提取PDF中的图片:")
        if 'PyMuPDF' in reader.available_engines:
            image_files = reader.extract_images(pdf_file, output_dir="提取的图片")
            if image_files:
                print(f"成功提取 {len(image_files)} 张图片:")
                for img_file in image_files[:5]:  # 只显示前5个
                    print(f"  - {img_file}")
                if len(image_files) > 5:
                    print(f"  ... 共 {len(image_files)} 张图片")
            else:
                print("该PDF中未找到图片或图片提取失败")
        else:
            print("图片提取功能需要PyMuPDF库")
        
        print("\n" + "="*60)
        
        # 5. 演示不同引擎的效果
        print("\n5. 比较不同引擎的提取效果:")
        test_page = 0  # 测试第一页
        
        for engine in reader.available_engines:
            try:
                print(f"\n使用 {engine} 引擎:")
                result = reader.extract_text(pdf_file, engine=engine, start_page=test_page, end_page=test_page+1)
                if result and result[0]['text']:
                    text_length = len(result[0]['text'])
                    print(f"  提取文本长度: {text_length} 字符")
                    preview = result[0]['text'][:100].replace('\n', ' ').strip()
                    print(f"  内容预览: {preview}...")
                else:
                    print("  未提取到文本内容")
            except Exception as e:
                print(f"  {engine} 引擎出错: {str(e)}")
        
        print(f"\n=== 示例演示完成 ===")
        print(f"生成的文件:")
        print(f"- {Path(pdf_file).stem}_提取的文本.txt")
        print(f"- {Path(pdf_file).stem}_提取的文本.json")
        if 'PyMuPDF' in reader.available_engines:
            print(f"- 提取的图片/ 目录中的图片文件")
        
    except ImportError as e:
        print(f"导入错误: {str(e)}")
        print("\n请安装必要的PDF处理库:")
        print("pip install -r requirements_pdf.txt")
        print("\n或手动安装:")
        print("pip install PyPDF2 pdfplumber PyMuPDF")
    
    except Exception as e:
        print(f"程序运行出错: {str(e)}")

if __name__ == "__main__":
    main() 